home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
SGI O2 Out of Box Experience 2.2
/
SGI O2 Out of Box Experience 2.2.iso
/
SysTour
/
BackButton.java
< prev
next >
Wrap
Text File
|
1998-05-26
|
3KB
|
134 lines
import java.lang.*;
import java.applet.*;
import java.util.*;
import java.awt.*;
import java.awt.image.*;
import java.net.*;
public class BackButton extends Applet{
final private byte IDLE = 0;
final private byte HIGHLIGHT = 1;
final private byte PRESSED = 2;
final private byte COMMIT = 3;
private Image idleImage;
private Image highlightImage;
private Image pressedImage;
private AudioClip clickSound;
private String statusMessage = null;
private String frame = null;
private byte buttonState = IDLE;
private Stack backStack = new Stack();
public void paint(Graphics g){
switch(buttonState){
case IDLE:
g.drawImage(idleImage,0,0,null);
break;
case HIGHLIGHT:
g.drawImage(highlightImage,0,0,null);
break;
case PRESSED:
g.drawImage(pressedImage,0,0,null);
break;
case COMMIT:
clickSound.play();
buttonState = HIGHLIGHT;
repaint();
break;
}
}
public void pushURL(URL url){
backStack.push(url);
System.err.println(url.toExternalForm());
}
public boolean mouseUp(Event evt, int x, int y){
if (buttonState == PRESSED){
buttonState = COMMIT;
try {
backStack.pop(); // (Throw away the current page)
getAppletContext().showDocument((URL) backStack.pop(),frame);
} catch (Exception e){
if (e instanceof EmptyStackException){
showStatus("Cannot backup any further.");
}
}
repaint();
}
return true;
}
public boolean mouseDown(Event evt, int x, int y){
buttonState = PRESSED;
repaint();
return true;
}
public boolean mouseEnter(Event evt, int x, int y){
buttonState = HIGHLIGHT;
if (statusMessage != null){
showStatus(statusMessage);
}
repaint();
return true;
}
public boolean mouseExit(Event evt, int x, int y){
buttonState = IDLE;
repaint();
return true;
}
public void init(){
String idleImageName = getParameter("IDLE");
String highlightImageName = getParameter("HIGHLIGHTED");
String pressedImageName = getParameter("PRESSED");
String clickSoundName = getParameter("CLICK");
statusMessage = getParameter("DESCRIPTION");
frame = getParameter("FRAME");
if (idleImageName != null){
idleImage = getImage(getDocumentBase(),idleImageName);
prepareImage(idleImage,this);
}
if (highlightImageName != null){
highlightImage = getImage(getDocumentBase(),highlightImageName);
prepareImage(highlightImage,this);
}
if (pressedImageName != null){
pressedImage = getImage(getDocumentBase(),pressedImageName);
prepareImage(pressedImage,this);
}
if (clickSoundName != null)
try {
clickSound = getAudioClip(new URL(getDocumentBase(),clickSoundName));
} catch (Exception e) {};
while ((checkImage(idleImage,this) & ImageObserver.ALLBITS) != 0);
repaint();
}
}